package br.requisiteworks.modelo.dao;

import java.util.List;

import br.requisiteworks.modelo.Cliente;
import br.requisiteworks.util.persistencia.DaoComum;
import br.requisiteworks.util.persistencia.ResultadoVazio;

/**
 * Interface para implementacao de uma DAO para entidades do tipo {@link Cliente}
 * 
 * @author Mikhail Domanoski
 * 
 * @version 1, 07/05/2010
 * 
 */
public interface ClienteDao extends DaoComum<Cliente> {

	/**
	 * Busca no banco de dados por um {@link Cliente} de acordo com o numero passado
	 * @param numero o valor numerico da chave promaria do {@link Cliente}
	 * @return O {@link Cliente} que possui numero igual a <b>numero</b>
	 * @throws ResultadoVazio Caso o {@link Cliente} nao seja encontrado
	 */
	public Cliente select(int numero) throws ResultadoVazio;

	/**
	 * Busca no banco de dados por um {@link Cliente} cujo o nome ou parte do nome contenha o parametro enviado
	 * @param nome Nome ou parte do nome do cliente
	 * @return Uma lista de {@link Cliente}s dos quais seus nomes possuem a {@link String} passada como parametro
	 * @throws ResultadoVazio Caso nao seja encontrado nenhum {@link Cliente}
	 */
	public List<Cliente> select(String nome) throws ResultadoVazio;
}
